/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package util;

import model.Ciudad;

/**
 *
 * @author Enrique
 */

// CLASE QUE CONTIENE METODOS CON FUNCIONES MATEMATICAS NO INCLUIDAS EN JAVA

public class Matematica {
    
    
    
    
    // metodo para hallar el maximo comun divisor entre 2 numeros
    public static float mcd (Float a, Float b){
        while (b>0){
            float temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }
    
    
    // metodo para calcular la distancia entre 2 coordenadas geograficas
    public static double distanciaEntrePuntos(Ciudad x, Ciudad y){
        
        double radioTierra = 6371;   //radio de la tierra, en km
        double dif_lat = Math.toRadians(y.getLatitud() - x.getLatitud());    //diferencia entre latitudes, en radianes
        double dif_lon = Math.toRadians(y.getLongitud() - x.getLongitud());    //diferencia entre longitudes, en radianes
        
        double a = Math.sin(dif_lat/2) * Math.sin(dif_lat/2) +
                    Math.cos(Math.toRadians(x.getLatitud())) * Math.cos(Math.toRadians(y.getLatitud())) *
                    Math.sin(dif_lon/2) * Math.sin(dif_lon/2);
        
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
        double d = radioTierra * c;
        
        return d;
    }
    
}
